package com.shujia.day14;

import java.util.HashSet;

/*
    Set:
        HashSet: 底层数据结构是哈希表，查找速度快，且元素唯一


    HashSet中的add方法实际上调用的是HashMap中的put方法
    底层和元素的hashCode方法值有关
    我们发现，底层判断待插入的元素是否已经存在哈希表中的方式是：
    将待插入的元素的哈希值与已经存储在哈希表中元素哈希值进行比较，
    然后再调用待插入的元素的equals方法比较已经存储在哈希表中元素。
    若哈希值一样，且equals结果为true，就表示这两个元素是同一个元素，不做添加

结论：
    若想要使用HashSet对元素进行去重，需要元素类型本身重写hashCode方法和equals方法。



 */
public class HashSetDemo1 {
    public static void main(String[] args) {
        //使用HashSet存储字符串元素
        HashSet<String> set1 = new HashSet<>();

        //添加元素
        set1.add("hello");
        set1.add("world");
        set1.add("hello");
        set1.add("java");
        set1.add("hello");
        set1.add("hadoop");

        System.out.println("set1: " + set1);

    }
}
